import session from 'koa-session';

class Memory {
  constructor() {
    this.data = {};
  }
  get(key) {
    return this.data[key];
  }

  set(key, value) {
    this.data[key] = value;
  }

  destroy(key) {
    if (key) {
      delete this.data[key];
    } else {
      this.data = {};
    }
  }
}

// 默认配置
const defaultConfig = {
  key: 'koa:Burger', // cookie 的键名
  maxAge: 1000000 * 60 * 60 * 24 * 700, // session 的有效期
  store: new Memory(), // 存储 session 的对象
  autoCommit: true, // 自动提交 headers
  overwrite: true, // 是否可以覆盖
  httpOnly: true, // 是否仅通过 HTTP 访问 cookie
  signed: true // 是否对 cookie 签名
};

const initSession = (app, config = {}) => {
  // console.log(config)
  // 合并配置
  const sessionConfig = { ...defaultConfig, ...config };

  if (!app.keys) {
    app.keys = ['I_AM_BURGER_WANG']; // 默认密钥，建议在生产环境中替换
  }
  return session(sessionConfig, app);
};

export default initSession;
